"""
能力的基类，负责Effect的生成,该组件依附于能力管理系统，为能力系统自身的属性
"""
class_name Ability extends Resource

var AS:AbilitySystem# 效果管理类

var has_effect:Array[GDScript]# 技能默认Effect的路径
signal touch_ability# 开始技能时触发
signal end_ability# 结束技能时触发
"能力可能只持续一定时间或者只能触发一定次数，这需要子类去实现"

# 能力生效，给能力管理系统添加对应的effect
# effect只能挂在于能力管理系统，调用能力需要传入目标能力系统Effect
func activate_ability(_as:AbilitySystem = AS) -> void:
	self.touch_ability.emit()
	commit_effect(_as)
	pass

# 生成Effect并发送给AbilitySystem组件
# Effect自行管理其生命周期
func commit_effect(_as:AbilitySystem = AS) -> void:
	if has_effect.is_empty():
		return
	for _effect in has_effect:#如果想让effet的效果不一样，可以在这里实例化并修改
		_as.add_effect(_effect.new())#传参的函数应该修改
		pass

# 能力销毁
func remove_ability() -> void:
	self.end_ability.emit()
	pass
	# 由于AbilitySystem绑定了所有技能的销毁信号
	# 所以统一进行销毁，技能只需要调用此函数即可
